/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.saber.certificacao.beansjsf.prova;

import br.com.saber.certificacao.beansjsf.semescopo.FluxoExibicaoMaster;
import br.com.saber.certificacao.utils.UtilMetodos;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author gbvbahia
 */
@ManagedBean(name = "fluxoExibicaoProva")
@ViewScoped
public class FluxoExibicao extends FluxoExibicaoMaster {

    private boolean exibirProvaCriacao;

    private boolean exibirProvaResponder;

    private boolean exibirProvaHistorico;

    private enum PaginaFluxo {
        CRIACAO_PROVA, RESPONDER_PROVA, HISTORICO_PROVA;
    }

    /** Creates a new instance of FluxoExibicao */
    public FluxoExibicao() {
    }

    //====================
    // Iniciadores
    //====================
    @Override
    @PostConstruct
    public void init() {
        metodoExibirProvaHistorico();
        Logger.getLogger(FluxoExibicao.class.getName()).log(Level.FINEST, "FluxoExibicao Prova:(init()) chamado...");
    }

    @Override
    @PreDestroy
    public void end() {
        Logger.getLogger(FluxoExibicao.class.getName()).log(Level.FINEST, "FluxoExibicao Prova: (end()) chamado...");
    }

    public void metodoExibirProvaHistorico() {
        alterarTela(PaginaFluxo.HISTORICO_PROVA);
    }

    public void metodoExibirProvaCriacao() {
        alterarTela(PaginaFluxo.CRIACAO_PROVA);
    }

    public void metodoExibirProvaResponde() {
        alterarTela(PaginaFluxo.RESPONDER_PROVA);
    }

    private void alterarTela(PaginaFluxo paginaLogin) {
        exibirProvaCriacao = (PaginaFluxo.CRIACAO_PROVA.equals(paginaLogin));
        exibirProvaResponder = (PaginaFluxo.RESPONDER_PROVA.equals(paginaLogin));
        exibirProvaHistorico = (PaginaFluxo.HISTORICO_PROVA.equals(paginaLogin));
        definirAtributos(paginaLogin);
    }

    private void definirAtributos(PaginaFluxo paginaLogin) {
        FacesContext fc = FacesContext.getCurrentInstance();
        switch (paginaLogin) {
            case CRIACAO_PROVA:
                this.tituloRichPanel = UtilMetodos.getResourceBundle("richpanelProvaCriacao", fc);
                this.imgURLNormal = "prova_criando_48.png";
                break;
            case RESPONDER_PROVA:
                this.tituloRichPanel = UtilMetodos.getResourceBundle("richpanelProvaResponder", fc);
                this.imgURLNormal = "prova_48.png";
                break;
            case HISTORICO_PROVA:
                this.tituloRichPanel = UtilMetodos.getResourceBundle("richpanelProvaHistorico", fc);
                this.imgURLNormal = "prova_historico_48.png";
                break;
            default:
                throw new AssertionError("Não foi definido case para a enum: " + paginaLogin.toString());
        }
    }

    //=========================
    //Getters AND Setters
    //=========================
    public boolean isExibirProvaCriacao() {
        return exibirProvaCriacao;
    }

    public void setExibirProvaCriacao(boolean exibirProvaCriacao) {
        this.exibirProvaCriacao = exibirProvaCriacao;
    }

    public boolean isExibirProvaHistorico() {
        return exibirProvaHistorico;
    }

    public void setExibirProvaHistorico(boolean exibirProvaHistorico) {
        this.exibirProvaHistorico = exibirProvaHistorico;
    }

    public boolean isExibirProvaResponder() {
        return exibirProvaResponder;
    }

    public void setExibirProvaResponder(boolean exibirProvaResponder) {
        this.exibirProvaResponder = exibirProvaResponder;
    }
}
